Apparatus to reject disk drive disturbance

ABSTRACT

Track mis-registration (TMR) correction is conditionally made in a hard disk drive using servo data in a closed loop servo control scheme, along with one or more alternative sensing schemes when an external shock or vibration occurs. The alternative sensing schemes include measurement of spindle motor speed using a frequency of servo markers read from a rotating disk, voice control motor (VCM) back emf, spindle motor speed back emf, and accelerometer readings. The predicted TMR resulting from the signal generated by the alternative sensing scheme(s) is simulated based upon a model of the disk drive system, and corrections are applied only if the expected TMR due to the disturbances is large enough that application of the corrections using the alternative sensing scheme would be likely to reduce the overall TMR. In one case, actual operation is occasionally performed with and without corrective TMR feedback from the selected sensing scheme(s), and the actual values are compared with predictions from the system model and the results are used to update the system model.

PRIORITY CLAIM TO PROVISIONAL APPLICATION

[0001] This Patent Application claims priority to U.S. ProvisionalPatent Application No. 60/476,634, filed Jun. 5, 2003, and to U.S.Provisional Patent Application No. 60/532,452, filed Dec. 24, 2003.

BACKGROUND

[0002] 1. Technical Field

[0003] The present invention relates to servo control to reduce trackmis-registration (TMR). More specifically, the present invention appliesto enhanced disturbance rejection when a shock or vibration occurs tocorrect for effects of that disturbance.

[0004] 2. Related Art

[0005] A hard disk drive typically includes one or more rotatablestorage media, or disks upon which data is encoded. The disks aremounted on the shaft of a spindle motor for rotation. Data is encoded onthe rotating disks as bits of information using magnetic field reversalsgrouped in tracks. A transducer head supported by an actuator arm isused to read data from or write data to the disks.

[0006] A voice control motor (VCM) attached to the actuator arm controlspositioning of the actuator, and thus the transducer head position overa disk. Current is applied to the coil of the VCM to control theposition of the actuator. Movement of the actuator caused by currentapplied to the VCM, or by an external shock, generates a back emfvoltage in the coil of the VCM motor. Measurements of back emf from theVCM coil are typically made to determine the velocity of the actuatorduring start-up, or until track positioning information can be read fromthe disk through the transducer head to determine actuator position.

[0007] The transducer head includes a slider having an air bearingsurface that causes the transducer to fly above the data tracks of thedisk surface due to fluid currents caused by the spindle motor rotatingthe disk. Thus, the transducer does not physically contact the disksurface during normal operation of the disk drive to minimize wear onboth the head and disk surface.

[0008] Typically during shut down, the actuator is positioned on a rampsituated off to the side of a disk. For some disk drives, the ramp maybe at or near the inner diameter of the disk. Before power is actuallyshut off, the actuator assembly is moved up the ramp to a park positionat the top of the ramp to prevent the slider from contacting the disk.

[0009] Startup includes moving the actuator down the ramp so that theslider of the transducer flies when it gets to the bottom of the ramp.To assure the slider does not come into contact with the disk, thevelocity of the actuator coming down the ramp is carefully monitored andcontrolled. Since servo data cannot be read using the transducer head,back emf voltage across the VCM coil is measured to monitor actuatorvelocity since back emf varies as a function of the velocity of theactuator sliding down the ramp.

[0010] Once the slider forms an air-bearing over the disk, the head cantypically read from the disk. Servo position data read from the disk isprocessed by the processor, enabling the processor to provide servocontrol signals to control the VCM for proper positioning of atransducer head relative to a disk. With servo position data availablefor determining actuator position, back emf voltage readings in previoussystems in most disk drive systems are no longer used to determine theposition and/or velocity of the actuator.

[0011] Control of the position of the head over tracks on the disk istypically achieved with the closed loop servo system where head positionservo information is provided from the disk to detect and control theposition of the heads. As will be recognized, a dedicated servo systementails the dedication of one entire surface of one of multiple disks toservo information, with the remaining disc surfaces being used for thestorage of user data. Alternatively, an embedded servo system involvesinterleaving the servo information with the user data on each of thesurfaces of the discs so that both servo information and user data isread by each of the heads. Hybrid systems also exist, in which oneentire disk surface is dedicated to servo information and a smallportion of each remaining disk surface also contains servo information.

[0012] Servo data read enables measurement or estimation of variousparameters including head position, velocity and acceleration and to usethese parameters in the closed-loop control of the position of the head.For example, during track following where a head is controlled to followa selected track on the disk, track mis-registration (TMR) is determinedusing a position error signal (PES) generated from servo information onthe disk to indicate relative distance between the head and the centerof the selected track. The PES is used to generate correction signalswhich adjust the position of the head by adjusting the amount of currentapplied to the VCM coil. Additionally, during a seek, which involves theacceleration and subsequent deceleration of the head from an initialtrack to a destination track on a disk, the measured or estimated radialvelocity of the head can be compared to a model or profile velocity,with correction signals being generated from the differences between theactual velocity and the profile velocity of the head.

[0013] Besides servo data read from a disk and back emf of the VCM coil,the amount of movement of the actuator due to a shock or vibration canbe predicted using other components in the disk drive. As one example,the back emf of the spindle motor may be used. Back emf from windingcoils of the spindle motor is typically monitored during operation ofthe disk drive to assure the spindle motor is operating at a desiredspeed. An external shock applied to the disk drive will cause a suddenmeasurable change in the spindle motor speed. Spindle rotational speedcan also be monitored by observation of the time between servo samplesread from the disk. As another example, one or more rotational and/orlinear accelerometers can be included in the disk drive for the purposeof measuring external shocks or vibrations applied. Accelerometers aremore typically used in notebook or more mobile computers where shocks orvibrations may be expected during operation to enable corrections to bemade should the actuator be knocked out of position, or at least toallow a write operation to be halted before any damage is done to tracksadjacent to the target track.

[0014] With increased track densities and rotational speeds of diskdrives, closed-loop control of head position has become increasinglycritical to minimize TMR. In one case to improve control of actuatorhead position, combining measurement techniques to determine actuatormovement has been contemplated. The combined measurement techniquesincluded measurement of back emf from the VCM which was continued afterservo data could be read from the disk. This combination of measuringback emf and using servo data to correct for TMR is disclosed in U.S.Pat. No. 5, 844,743, entitled “Velocity Sensing Using Actuator CoilBack-EMF Voltage,” which is incorporated herein by reference.

[0015] Combining measurement techniques to measure and correct foractuator movement caused by vibrations or shocks, however, may notimprove the performance of a system controlling TMR. The additionalsensors used may provide noisy or low-resolution signals, and servocorrections made on the basis of those signals may actually add more TMRthan they eliminate. To improve disk drive system performance, there isa continuing need for improved approaches to control TMR.

SUMMARY

[0016] In accordance with the present invention, TMR correction is madeusing a combination of servo position error signals (PES) and one ormore alternative disturbance sensing schemes, without suffering greatlyfrom noise or low resolution problems of previous methods for TMRcorrection.

[0017] The present invention is made with recognition that theunconditional use of one of the alternative sensing schemes, includingspindle motor speed determined from a frequency of servo markers passinga transducer head, VCM back-emf, spindle motor back emf, and/oraccelerometer signals to control the position of the transducer mayactually increase the TMR of the R/W head during normal operation andmay only improve it when the dominant source of TMR is an externaldisturbance.

[0018] In accordance with the present invention, information is obtainedfrom one or more of the alternative sensing schemes. The expected TMRthat should have resulted with the signal generated by the alternativesensing scheme(s) is simulated based upon a model of the system, andcorrections are applied using the alternative sensing scheme only if theexpected TMR due to the disturbance is large enough (or exceeds athreshold) so that application of the corrections using the alternativesensing scheme would likely reduce the total TMR.

[0019] In one case, actual operation is occasionally performed with andwithout corrective TMR feedback from one or more of the alternativesensing schemes. The actual values are then compared with predictedvalues from the system model, and the results are used to update thesystem model.

[0020] With conditional TMR correction based on measurements from one ormore of the alternative sensing schemes in accordance with the presentinvention, performance of a drive subjected to large externaldisturbances is improved. Conditional TMR correction is particularlyimportant for drives intended for mobile applications. Conditional TMRcorrection may, however, also be beneficially applied to drives inhigh-speed server applications, where external disturbances from othernearby drives occasionally cause high TMR.

BRIEF DESCRIPTION OF THE DRAWINGS

[0021] Further details of the present invention are explained with thehelp of the attached drawings in which:

[0022]FIG. 1 shows a block diagram of components of a hard disk drivesystem with components enabling TMR correction to be made due to anexternal shock or vibration in accordance with the present invention;

[0023]FIG. 2 illustrates data written in tracks on a disk with definedservo sectors;

[0024]FIG. 3 shows details of the VCM driver of FIG. 1; and

[0025]FIG. 4 shows details of the spindle motor, along with furtherdetails of the spindle motor driver of FIG. 1;

[0026]FIG. 5 shows an alternative configuration for the spindle motordriver;

[0027]FIG. 6 shows a diagram for a model used in simulating a system forthe VCM servo loop;

[0028]FIG. 7 shows a further diagram for the system model simulating aspindle motor control loop;

[0029]FIG. 8 shows a plot of open-loop gain and phase-margin for the VCMcontrol loop in FIG. 6;

[0030]FIG. 9 shows a plot of open-loop gain and phase margin for theSPIN SPEED control loop of FIG. 7;

[0031]FIGS. 10A-10B show plots of a disturbance and a resulting spinspeed error signal;

[0032]FIGS. 11A-11B show a plot of wedge to wedge servo detection clockswhen a disturbance is applied;

[0033]FIGS. 12A-12B shows a plot of a disturbance applied to the diagramof FIG. 6 along with a resulting PES output;

[0034]FIG. 13A-13B show additional plots of parameters from the modelsof FIGS. 6-7; and

[0035]FIG. 14-14B show additional plots of parameters from the model ofFIGS. 6-7.

DETAILED DESCRIPTION

[0036]FIG. 1 shows a block diagram of components of a hard disk drivesystem with components enabling TMR correction to be made due to anexternal shock or vibration in accordance with the present invention.The hard disk drive includes a rotating disk 2 containing a magneticmedium for storing data in defined tracks. Data is written to or readfrom the disk 2 using a transducer or read/write head 4 provided on anactuator 6. The actuator movement is controlled by a voice control motor(VCM) 7 made up of a coil configured for receiving an external controlsignal, and a magnet (the magnet is not shown in FIG. 1).

[0037] Current is provided to the coil of the VCM 7 using a VCM driver10. Details of the VCM driver 10 and VCM 7 are described subsequentlywith respect to FIG. 3. The VCM driver 10 in turn receives currentcommand signals from a processor 12 to control the amount of currentapplied to achieve a desired movement of actuator 6.

[0038] To control the actuator 6 using a closed loop servo controltechnique, the processor 12 receives data from the rotating disk 2. Thedata is read from or written to the rotating disk 2 using the transducerhead 4. The analog data read is provided through a read/write (R/W)pre-amplifier 14. The amplified read data is provided to the R/W channel16, which includes circuitry to condition the analog signal, convert thedata from analog to digital and decode the digital data to provide tothe hard disk controller (HDC) 34. The R/W channel 16 further transmitsdata received from the HDC to be written to the R/W preamp 14 whichconverts it to an analog signal to be sent to transducer head 4. Thedata read includes servo data provided in digital form from the HDC 34to the processor 12.

[0039] In the closed loop servo system, servo data provided to theprocessor 12 includes information indicating track positioning of thetransducer head 4 over the rotating disk 2. The track positioninginformation indicates the track the transducer head 4 is placed over, aswell as any misalignment of the transducer head 4 relative to a track.Servo data is recorded periodically along each track in servo sectors,such as 57, on the rotating disk 2 between other non-servo data asillustrated in FIG. 2. FIG. 2 shows a number of data tracks 51-53programmed on a rotating disk. The placement of servo sectors, such as57, between data sectors in the data tracks 51-53 illustrates that whilethe servo sample-rate generally stays the same across the stroke of thedrive, there are usually more data-sectors at the outer diameter (OD)(due to its increased circumference, relative to that at the innerdiameter ID). A real-time servo control algorithm is typically run on aninterrupt basis on the processor, with the interrupt being triggeredwhen a servo sector is passed by a read/write head 4 using servodemodulation hardware typically provided in the HDC 34. The processor 12determines track mis-registration (TMR) from the servo sector data readand creates a servo current command signal for providing to VCM driver10 to correct for the track misalignment. In a system where the actuatorarm rotates about a pivot point such as a bearing, the servo wedges maynot extend linearly from the ID of the disk to the OD, but may be curvedslightly in order to adjust for the trajectory of the head as it sweepsacross the disk.

[0040] The processor 12 can provide control commands to a spindle motorcontroller 18 to control the operation speed of the spindle motor. Thespindle motor controller 18 in turn provides control signals to thespindle motor driver 19, which in response applies current to thewindings of the spindle motor to cause the desired motor speed. Thespindle motor driver 19 is described in more detail subsequently withrespect to FIG. 4.

[0041] Processor 12 executes instructions acquired from a stored controlprogram to control disk drive functions. During startup, the controlprogram is embedded in flash memory, or other non-volatile memory 25connected to processor 12 and then either executed directly, or loadedinto a random access memory RAM 22 connected to the processor 12 andexecuted. Various firmware routines are stored in memory locations forcontrolling the operation of the actuator 6 and spindle motor 30. Here,control programs include the instructions the processor 12 executes, andtables, parameters or arguments used during the execution of theseprograms.

[0042] The processor 12 also communicates with the HDC 34 which hasaccess to components external to the hard disk drive system, forexample, through an advanced technology attachment (ATA) interface bus20. As illustrated the ATA bus 20 can be connected to a host systemoperating the disk drive. The ATA bus 20 can also be referred to as anintegrated drive electronics (IDE) bus, and although specifically shownas an ATA bus, may be another type of external component interface inaccordance with the present invention. The HDC 34 further accesses amemory controller 35 that drives an external DRAM memory 36. The memorycontroller 35 can include circuitry to control the refreshing of theDRAM 36, as well as circuitry to arbitrate between the various functionsthat need to access the DRAM 36 (data to/from the disk 2, refreshingoperations, data/instruction accesses from the processor 12, etc).Control programs for the processor may reside on the disk 2, in DRAM 36,non-volatile memory 25, or in RAM 22 directly accessible by theprocessor.

[0043] For a hard disk drive, application specific integration circuits(ASICs) have been created to integrate a number of circuit componentsonto a single chip. One such ASIC 26 is illustrated in FIG. 1. As shown,the ASIC 26 integrates the processor 12, RAM 22, R/W channel 16, spindlemotor controller 18, HDC 34, memory controller 35 for an external DRAM36, and ATA interface bus 20 all onto a single chip. The chip for diskdrive control is typically referred to as a system on a chip (SOC).

[0044] Although shown as separate components, the VCM driver 10 andspindle motor driver 19 can be combined into a single “hard diskpower-chip”. It is also possible to include the spindle speed controlcircuitry in that chip. The processor 12 is shown as a single unitdirectly communicating with the VCM driver 10, although a separate VCMcontroller processor may be used in conjunction with processor 12 tocontrol the VCM driver 10. Further, although spindle motor controller 18is shown as a separate entity from processor 12, it is understood that aspindle motor control algorithm (part of what is referred to by spindlemotor controller 18) may be combined into the processor 12.

[0045]FIG. 3 shows details of the VCM driver 10 of FIG. 1 as connectedto the VCM 7. As shown, the VCM driver 10 includes a VCM currentapplication circuit 50, which applies current to the coil 8 of the VCM 7with a duration and magnitude controlled based on a signal received fromthe VCM driver 10. The coil 8 is modeled in FIG. 3 to include a coilinductance 71, a coil resistance 72 and a back emf voltage generator 73.Current provided through the coil 71 controls movement of the rotor 9,and likewise movement of the rotor generates a back emf voltage involtage generator 73.

[0046] The VCM driver 10 further includes a back emf detection circuit52 for sensing the velocity of the actuator based on an estimate of theopen-circuit voltage of the VCM 7. The open-circuit voltage of the VCMis estimated by observation of the actual VCM voltage and the VCMcurrent (either the commanded current or the sensed current, sensedusing a series resistor 70), and multiplication of the current by anestimated VCM coil resistance and subtraction of that amount from themeasured coil voltage. As indicated previously, during shut down, theactuator 6 is positioned on a ramp 28 situated off to the side of a disk2 to prevent contact between the transducer head 4 and disk 2. Duringstartup, actuator velocity down the ramp 28 is controlled usingmeasurements from the VCM back emf detection circuit 52 so that theslider of transducer 4 flies when it gets to the bottom of the ramp 28and does not contact the disk 2.

[0047] In one embodiment of the present invention, measurements of VCMback emf are also made using the VCM back emf detector 52 and VCM driver10 after startup when closed loop servo control begins using servo datafrom disk 2. The VCM back emf information is provided from the VCMdriver 10 to the processor 12. The processor 12 then uses the VCM backemf measurements either alone or in conjunction with the servo data fromdisk 2 to improve servo control should an external disturbance occur. Inaccordance with the present invention, the processor 12 uses a systemmodel to identify when the TMR due to the disturbances sensed frommeasurement of the back-EMF exceeded a threshold, and conditionallyapplies TMR correction using the VCM back emf when it is beneficial.More details of the system model used to set thresholds are describedbelow.

[0048]FIG. 4 shows details of the spindle motor 30 supporting the rotorshaft 31, and the spindle motor driver circuit 19. The spindle motor 30includes a coil 62 with three windings 63, 64 and 65 electricallyarranged in a Y configuration. A rotor 68 of the spindle motor 30 hasmagnets that provide a permanent magnetic field. The spindle motordriver circuit 19 supplies current to windings 63-65 to cause rotor 68to rotate at a desired operating spin-rate. The spindle motor driver 19includes a commutation and current application circuit 40 to applydifferent commutation state currents across windings 63-65 at differenttimes. The commutation and current application circuit 40 applies thecommutation state currents based on signals received from the spindlecontroller 18. The spindle motor controller 18 monitors the time periodbetween back emf zero crossings using the spindle motor back emfdetector 42 and uses this time period information to enabledetermination of the speed of spindle motor 68. The speed indication isthen used by the spindle controller 18 to control the commutationvoltages applied across windings 63-65 to accomplish a desired speed.

[0049]FIG. 5 shows an alternative configuration of the spindle motordriver circuit 19. As shown, the commutation and current applicationcircuit 40 receives the back emf zero crossing signals from the spindlemotor back emf detector 42. The commutation circuit 40 then includescircuitry to calculate the current application states needed to obtain adesired speed based on a spindle motor speed indication determined fromthe spindle motor back emf detector 42 (during steady-state operation;during open-loop startup, commutation states are determined internallyor provided from the spindle controller 18). In the embodiment of FIG.5, some (or all) of the processing to performed by the spindle motorcontroller 18 of FIG. 4 is included in the commutation circuit 40. Thespindle controller 18 then may be either removed, or configured toprovide only clocking or desired spindle motor speeds to the commutationcircuit 40.

[0050] In one embodiment of the present invention, using either thecircuitry of FIG. 4 or FIG. 5, measurements of spindle motor speed arealso made using the spindle motor back emf detector 42 to detectexternal disturbances such as a rotational shock or vibration. Thespindle motor back emf information is provided from the spindle motorcontroller 18 to the processor 12. The processor 12 then uses thespindle motor back emf measurements in conjunction with the servo datafrom disk 2 to improve servo control should an external physical shockoccur.

[0051] In a further embodiment of the present invention, measurements ofspindle motor speed are made using servo address markers (SAM) read fromthe servo data on disk 2. The SAMs occur in the servo data received bythe processor 12, and like the rest of the servo data the SAMs occurperiodically enabling the processor 12 to determine the rate of speedthe spindle motor 30 is operating.

[0052] In accordance with the present invention, the processor 12 uses asystem model to identify when the TMR due to the external disturbancesthat caused spindle motor speed variations are likely to exceed athreshold where correction for TMR would be beneficial. If the thresholdis exceeded, the processor 12 makes adjustments to the control algorithmthat it uses to determine the appropriate current commands that it sendsto the VCM driver 10, using information obtained from the spindle motorspeed measurement to correct for the TMR.

[0053] In a further embodiment of the present invention, signals areprovided from an accelerometer 17 attached to a housing 27 containingthe disk drive system components to detect an external disturbance suchas a shock or vibration. The accelerometer 17 may be either a rotationalaccelerometer or a linear accelerometer. As a rotational accelerometer,the rotational acceleration experienced by the accelerometer 17 in thedisk drive will reflect the rotational acceleration applied to theactuator 6. A number of linear accelerometers can make up such arotational accelerometer, so it is contemplated that linearaccelerometers can be used in place of the rotational accelerometer ifdesign considerations so dictate. The accelerometer 17 can likewise be asingle linear accelerometer if design requirements so dictate. One ormore linear accelerometers may be beneficial for a particular designshould a primarily linear (not rotary) disturbance be expected. A linearaccelerometer will reflect acceleration applied to the actuator 6 in onedirection only. Multiple linear accelerometers set to measure linearacceleration in different directions can be used if shock applied inmore than one particular direction that will affect the actuator.

[0054] The signal from the accelerometer 17 is provided through a buffer23 (or conditioning circuit) and A/D converter 24 to the processor 12.In accordance with the present invention, the processor 12 uses a systemmodel to identify when the magnitude of the TMR resulting from theacceleration sensed by the accelerometer 17 exceeds a threshold wherecorrection for that TMR would be beneficial. If the threshold isexceeded, the processor 12 makes adjustments to the control algorithmthat it uses to determine the appropriate current commands that it sendsto the VCM driver 10 using the rotational accelerometer signal.

[0055] In further embodiments of the present invention, combinations oftwo or more of the alternative sensing schemes including VCM back emf,spindle motor speed and accelerometer measurements are used incombination with servo data in a closed loop control system. As withother embodiments, the processor 12 uses a system model to identify whenthe TMR predicted by a system model using measurements from acombination of the alternative sensing schemes exceeds a threshold wherecorrection for that TMR would be beneficial. If the threshold isexceeded, the processor 12 sends a signal to the VCM driver 10 to makeproper adjustments to the actuator 6 to conditionally correct for theTMR using two or more of the alternative sensing schemes.

[0056] The system model used by the processor 12 to determine athreshold is provided as code in a memory accessible by the processor,such as RAM 22, described above. In one embodiment, the system modeltakes the form of a state-space model of the entire servo loop whichaccounts for both the mechanics and the nominal (without extra sensors)servo loop characteristics in a calculation of actuator movement inresponse to a disturbance. Further, TMR is determined as caused bysources other than by external disturbances. Effectiveness ofcorrections for TMR are then determined based on TMR caused by acombination of both external disturbances and TMR from other sources todetermine whether TMR correction using the alternative sensor input(s)should be applied. A threshold is set where TMR correction due to thealternative sensor measuring a disturbance will be more effective thanif the correction were not applied with the alternative sensor.Generally, the threshold will be exceeded when the TMR due to anexternal disturbance is significantly greater than general TMR not dueto the external disturbance.

[0057] As one example, a model was created using a derivative of spindlemotor speed variation determined from a frequency of servo addressmarkers (SAMs) passing a transducer head to detect a disturbance andprovide disturbance rejection. Although other feed forward measurementscan be used, spindle motor speed used in the model was preferred. In theabsence of a closed loop spindle-speed control system, the derivative ofspindle speed provides an accurate representation of disturbance. In thepresence of a closed loop spindle-speed control system with significantresponse capability in the frequency-ranges of interest, the derivativeof spindle speed would have to be post-processed to determine anestimated disturbance, using mathematical techniques that are well knownto one of ordinary skill in the art. For the system examined in AppendixA, the spindle-speed control system was slow enough that the derivativeof the spindle speed provided a good indication of the disturbance. Theexample model was run and simulation results were providing usingMATLAB® by Mathworks, with comments included indicting that a feedforward signal used is the derivative of spindle motor speed. TheMATLAB® program is attached as Appendix A. The output by a run of theMATLAB® program of Appendix A is provided in Appendix B. The resultsdemonstrate vibration rejection technology on an idealized disk driveservo loop. Although idealized, noise simulation is applied to simulatea disk drive operating in a non-ideal environment. The initialparameters for the model were as follows:

[0058] VCM moment radius in inches=2.0

[0059] Tracks per inch=100,000

[0060] Servo sectors (or wedges) per revolution of the disk=150

[0061] Spindle Motor Speed In Revolutions Per Second=90

[0062] Servo Loop Clock Frequency=800×10⁶

[0063] Samples To Simulate=10×Wedges Per Revolution

[0064] Sample Time=1/(Wedges Per Revolution×Spindle Motor Speed)

[0065] Disturbance Amplitude=100 rad/sec²

[0066] Disturbance Frequency=50 Hz

[0067] Disturbance Type=A sine wave

[0068] A diagram for a model used in the system for the VCM servo loopis shown in FIG. 6. As shown, the system includes the VCM controller 80and VCM 7 connected in series. As indicated previously, the processor 12of FIG. 1 can function as a VCM controller 80. The output of the VCM 7is the position error signal (PES) indicating TMR typically obtainedfrom servo information read from the rotating disk. The PES output is ahead position indicated in tracks. Feedback in the form of the trackposition error signal (PES) is then provided from the VCM 7 output andis subtracted in summer 81 from the TARGET input to provide the VCMcontroller 80 input. A unity feedback system is, thus, formed. Thetarget (TARGET) input to the VCM controller 80 is a PES of zero, whichremains constant (simulating tracking, as opposed to seeking, control ofthe actuator). A disturbance (DIST) is added into the system as an inputto a summer 82 between the VCM controller 80 and VCM 7. The output VCMcontroller 80 provides a second input to the summer 82, and the outputof the summer forms the input of the VCM 7. By providing the disturbancevalue in this manner, the model will represent a system where someoutside entity is pushing and/or pulling the transducer head. In thesimplified model, the system has three states as follows:

[0069] State 1: The VCM angular position (in radians)

[0070] State 2: The VCM angular velocity (in radians per second)

[0071] State 3: The internal state of the controller.

[0072] Of course, as would be known to one of skill in the art, anaccurate model of a modern disk-drive VCM control loop would have manymore states in both the VCM and in the controller. The description herehas been reduced to a minimal level of complexity in order to mosteasily disclose the present invention.

[0073] A further diagram for the system model shows a spindle motorcontrol loop in FIG. 7. The construct is similar to the VCM loop, andincludes the spindle controller 18 in series with the spindle motor 30.The output of the spindle motor 30 is a spin speed indication (SPINSPEED) which can be measured using rate of servo wedges passing thetransducer head. Feedback in the form of the spindle motor speed (SPINSPEED) is then provided from the spindle motor 30 to the input of asummer 83 to be subtracted from a target speed (TARGET) applied to asecond input of the summer 83. The output of summer 83 is applied as aninput to the spindle motor controller 18. The same disturbance (DIST)applied in FIG. 6 is fed into the input of a summer 84 where it is addedwith the output of the spindle controller 18. The output of summer 84 isthen applied to the input of the spindle motor 30. This diagram furtherincludes injection of a noise element (NOISE) into the spindle motorspeed (SPIN SPEED). The (NOISE) input is added to the spindle motorspeed output from spindle motor 30 in summer 85. The output of thesummer 85 then provides the overall SPIN SPEED. Because only spindlemotor speed (SPIN SPEED) is needed for system operation of this model,the only state of the diagram of FIG. 7 is the spin speed (in radiansper second). As was the case with the VCM control-loop model, a moreaccurate model of the spin-speed control-loop would have additionalstates. Again, this description has been simplified in order to mosteasily disclose the present invention.

[0074] In the model, parameters for sampling frequency, disturbance, andnoise are set. A frequency vector is established with frequencyincreasing in increments of 0.001 times the Nyquist frequency up to theNyquist frequency. The disturbance used is a sine wave having equalpositive and negative (push and pull) pulses. The units of thedisturbance, expressed as an angular acceleration, are provided inradians/second. White noise is applied to the spindle speed output tosimulate the effects of written-in timing-runout, as well as electricalnoise and race conditions in the servo address marker (SAM) to SAMtiming measurement.

[0075]FIG. 8 shows a plot of open-loop gain 83 and open-loopphase-margin 81 for the VCM control loop in FIG. 6. For low frequencies,the open-loop gain falls, varying roughly in proportion to the inverseof the frequency squared. As the frequency approaches the open-loopcrossover frequency (˜1200 Hz), the rate at which the gain falls off isreduced by the phase-lead of the controller. As the frequency approachesthe Nyquist frequency (based upon the servo sample-rate of 6750) thegain falls more rapidly. The phase-lead produced by the controller isevident in the “phase bubble” of curve 81 in the vicinity of thegain-crossover frequency.

[0076]FIG. 9 shows a plot of open-loop gain 87 and open-loop phasemargin 85 for the spindle motor control loop of FIG. 7. In that plot,the open-loop gain is seen to fall, varying roughly in proportion to theinverse of the frequency for the entire plot. The phase-margin is nearly90% in the vicinity of the gain-crossover frequency (a little under 2Hz).

[0077]FIG. 10A shows a plot of a disturbance 80 applied and a resultingspin speed error signal 82 (the difference in the SPIN SPEED and TARGETSPEED) vs. a servo wedge count. The disturbance 80 is measured as arotational acceleration in radians/sec². The resulting spin speed errorsignal 82 is the difference between the spin speed velocity output fromFIG. 7 and the desired spin speed in radians per second as determined inthe spindle motor controller 18 in the diagram of FIG. 7. The spin speederror 82 and disturbance 80 are plotted verses wedges passing thetransducer head ranging from 0 to 1500. The amplitude of disturbancesignal 80 is scaled by dividing by 100 to enable a comparison.

[0078] For reference, FIG. 10B shows the disturbance 80 and a resultingspin speed error signal 82 of FIG. 10A, but plotted against time inseconds. The disturbance signal 80 amplitude is scaled by dividing by200, instead of 100 as in FIG. 10A, for a slightly different comparison.As shown, the plots remain substantially the same irrespective ofplotting against a wedge count or plotting against time.

[0079]FIG. 11A shows two plots of wedge to wedge servo detection clockswhen a disturbance is applied, one plotted as if the clock had infiniteresolution 92, and the other 90 with clock count rounded to integercounts over finite time periods (as would occur in a real systemimplementation). The vertical axis in FIG. 1A shows servo clock counts,where each clock-count represents a time equal to 1/800000000 secondswith the servo clock frequency set at 800 MHz for the finite resolutionplot 90. FIG. 111B shows a zoom-in on a portion of the plot shown inFIG. 11A. The stars shown on the infinite resolution clock line 92 showwhere servo wedges occur. The limited clock rate of 800 MHz will causesome wedge-to-wedge correction offset errors, as shown. With asubstantial increase in the clock rate, the correction errors would bereduced.

[0080]FIG. 12A shows a plot of a disturbance (DIST) 93 applied to thediagram of FIG. 6 along with a resulting PES output 95. The PES output95 is plotted as an offset in tracks versus wedges passing by thetransducer head. The disturbance 93 is plotted as an accelerationmagnitude in radians/sec² versus wedges passing by the transducer headup to 1500. The disturbance magnitude is scaled by/100 causing the PES95 and disturbance DIST 93 plots to overlay. Note that the actualpush-pull disturbance magnitude causes a TMR of as much as 1 track widthfor both the push and pull. Feedback of the PES through the summer 81 tothe VCM controller 80 of FIG. 6 then adjusts the track position so thatthe PES is well below a TMR of 0.1 tracks after the disturbance isremoved.

[0081] For reference, FIG. 12B shows the disturbance 93 and a resultingPES 95 of FIG. 12A, but plotted against time in seconds. The disturbancesignal 93 amplitude is scaled by dividing by 200, instead of 100 as inFIG. 12A, for a slightly different comparison. As shown, the plotsremain substantially the same irrespective of plotting against a wedgecount or plotting against time.

[0082]FIG. 13A shows three separate plots 100, 102 and 104. The plot 100is a dashed line showing PES output from the diagram of FIG. 6. Theplots 100, 102 and 104 of FIG. 13A are all plotted as PES or trackoffset over a time period of 0.12 seconds.

[0083] The plot 102 is an intermediate thickness line showing the PESoutput from the diagram of FIG. 6 with feed forward applied from thecircuit of FIG. 7, assuming a near infinite clock rate. With the plot102, a very high clock rate (significantly higher than the 800 MHz clockactually modeled using FIG. 7), effectively provides a near perfect feedforward signal. The feed forward signal is applied to the VCM controller80 of FIG. 6 with the output of the summer 83 of the spindle motorcontrol loop of FIG. 7.

[0084] The plot 104 is the thin thickness line showing the PES outputfrom the diagram of FIG. 6 with feed forward applied from spindle motorcontroller 18 in the circuit of FIG. 7 operating with a 800 MHz clock,and the resulting errors due to wedge-to-wedge clock edge misalignment.The effect of wedge-to-wedge clock misalignment was initiallyillustrated in FIGS. 11A-11B. A filter is applied to the feed forwardsignal from the spindle motor control loop of FIG. 7 to smooth theeffect of clock misalignment. For plot 104, the feed forward signal isapplied through to the VCM controller 80 from the output of summer 83 ofFIG. 7 through a filter (not shown) to the VCM controller, this timewith the spindle motor loop of FIG. 7 operating with an 800 MHz clock.

[0085] As shown in FIG. 13A, without feed forward in plot 100 the TMRresulting from the push-pull disturbance applied is 1 full track.Typically a TMR as great as 0.2 tracks will cause a disk drive to haltany read/write operations in progress. With a feed forward signalapplied from the spindle motor control loop using near perfectcorrections in plot 102, the TMR is with the less than perfect 800 MHzclock in the plot 104, the TMR is reduced to less than 0.2 tracks. Notethat once the spindle motor feed forward has been applied in plot 104,and the circuit stabilizes beyond 0.03 seconds, over correction errorsoccurring due to the finite servo clock resolution, such as at points107-109, can cause TMR of approximately 0.1 tracks.

[0086]FIG. 13B shows an alternative to the plots 100, 102 and 104 ofFIG. 13A, where the plot 104 is applied with a filter providing onefifth of the smoothing of the filter used in the feed forward of FIG.13A. In FIG. 13A, the filter smoothing factor is 0.5, while in FIG. 13Bthe smoothing factor is reduced to 0.1. As shown in FIG. 13B, the noiseon plot 104 is more defined with less filtering during the disturbancedue to the wedge-to-wedge clock misalignment shown in FIGS. 1A-11B.Further, the over correction errors 107-109 due to finite clockresolution are more defined at approximately 0.2 tracks.

[0087]FIG. 14A shows the estimated rotational disturbance (in rad/sec2). Plot 110 is a thin line showing the raw result of simplydifferentiating the wedge-to-wedge clock-count signal shown in FIGS.11A-11B, and plot 112 shows a filtered version of the signal. The plot112 begins as a white line to differentiate from plot 110 at less than0.02 seconds, and changes to a thick dashed line after 0.02 seconds. Thesignal 112 is more appropriate for use in controlling the response ofthe actuator to the disturbance, since it varies much less wildly thanthe signal 110. The plot 112 is used to generate the feed forward signalfor the filtered feed forward output 104 in FIG. 13A provided from thespindle speed loop circuit of FIG. 7. As shown in FIG. 14A, the plot 112basically tracks the push pull disturbance applied.

[0088] Due to the noise illustrated in plots 110 and 112, it istypically desirable to use the VCM servo loop of FIG. 6 without feedforward when a disturbance does not occur, particularly in light of theover correction spikes, such as 114. With the over correction spikes 114occurring when no disturbance is applied, a significant TMR overcorrection would occur with feed forward. In accordance with the presentinvention, the feed forward from the spindle motor control loop of FIG.7 is only applied only when the servo controller determines thatapplication of the feedforward is likely to reduce the overall TMR ofthe drive.

[0089] The determination of whether or not to apply the disturbancefeedforward can be made in any of a number of different ways. In oneembodiment, the servo controller can constantly run models similar tothe ones described above, and switch modes (from not applying toapplying disturbance feedforward) according to whichever mode gives thesmallest predicted TMR. To avoid rapid mode-switches when the twopredicted TMRs are nearly equal, the servo would probably usehysteresis, as would be apparent to one skilled in the art. For example,the servo could require that the feedforward mode be allowed to switchonly when the predicted TMR with the current mode exceeded the othermode by more than a specified margin (say 10%).

[0090] In another embodiment, the servo could employ disturbancefeedforward whenever the measured ontrack TMR exceeded a specifiedlevel. This switch would be made under the assumption that the reasonfor the large TMR was due to an external disturbance, and that thedisturbance was likely to continue for a relatively long time. Thedisturbance feedforward could be turned off when the measured TMR wasnear to that which would be predicted for an un-disturbed system withthe feedforward turned on (implying that the external disturbance wasgone).

[0091] In yet another embodiment, the feedforward could be used wheneverthe magnitude of the disturbance, itself, exceeded a specified level. Inorder to avoid rapid mode-switches, the measured disturbance level couldbe filtered before being compared to the threshold level, and the servocould use hysteresis as described above. Alternatively, the servo couldswitch to a mode in which disturbance feedforward was used only if thefiltered disturbance exceeded a specified level for a specified periodof time, and back to the “normal” mode only after a specified period oftime during which the filtered disturbance was below the same (oranother) level.

[0092] In yet another embodiment, a combination of the measured TMR andthe measured disturbance can be used to switch between modes. Forexample, the servo could switch to using disturbance feedforward only ifthe TMR was higher than a specified threshold AND a filtered measureddisturbance was beyond another specified threshold. It could switch backto “normal” mode after both the measured TMR and the filtered measureddisturbance were below their respective thresholds for a specified timeperiod.

[0093]FIG. 14B shows an alternative to the plots 110 and 112 FIG. 14A,where the plot 112 is applied with the filter providing one fifth of thesmoothing of the filter used in the feed forward plot 112 of FIG. 14B.The signal 112 of FIG. 14B is applied as the feed forward signal in FIG.13B. As shown in FIG. 14B, the noise on plot 112 is more defined withless filtering during the disturbance due to the wedge-to-wedge clockmisalignment shown in FIGS. 11A-11B. Further, the over correction errors114 due to finite clock resolution are more significant. As would beunderstood by a person of ordinary skill, filter smoothing amount can beset to a desired value depending on factors such as the clock speed forthe spindle motor, the maximum TMR considered correctable by PES alone,or other design factors.

[0094] In one embodiment of the present invention, predicted data basedon a system model is checked for accuracy with actual measurements.Checking is performed to enhance the predicted data by occasionallyperforming actual operation with external disturbances applied whileservo correction is made both with and without corrective TMR feedbackfrom the alternative sensing scheme(s). Such checking can also be donewhen no external disturbances are applied (or when the externaldisturbances are very small), to evaluate the TMR degradation thatresults from control based upon signals from the extra sensors. Theactual values are compared with values predicted using the system modeland the model is modified if different from the actual values to enablea more informed conditional decision to be made when futuredisturbances, such as shocks or vibrations occur.

[0095] With minimal external physical disturbances, closed loop servocontrol using servo data for track following may do a better jobcompensating for the TMR without the use of alternative sensingtechniques. Use of the alternative sensing technique in addition to theservo data with a minimal disturbance may actually degrade the TMRbecause of noise or resolution issues with the additional sensors. Withthe physical disturbance being significant enough to displace theactuator from a track so that user data can no longer safely be read orwritten, then use of the alternative technique is more likely to improvethe TMR. With such a significant disturbance, conditional application ofcorrection using a combination of traditional servo PES and thealternative sensing technique will improve system performance.

[0096] Although the present invention is described for use with harddisk drives for recording in magnetic media, it is understood thatprinciples in accordance with the present invention can be used withoptical disk drives, or other types of magnetic disk drives such asfloppy drives. Similarly although an example model is provided usingspindle motor speed determined from a frequency of SAMs passing atransducer head, models using spindle motor back emf, VCM back emf oraccelerometer readings could be used if desired.

[0097] Although the present invention has been described above withparticularity, this was merely to teach one of ordinary skill in the arthow to make and use the invention. Many additional modifications willfall within the scope of the invention, as that scope is defined by thefollowing claims.

Appendix A

[0098] APPENDIX A MATLAB ® Model % This script demonstratesOperational-Vibration Rejection technology % on an idealized disk driveservo loop. % vcmRadiusInches = 2; tpi = 100e3; wedgesPerRev  = 150;spinSpeedHz = 90; servoClockFrequency = 800E6; disturbanceAmplitude =100; % Units are rad/sec{circumflex over ( )}2 disturbanceFreqHz  = 50;disturbanceType = ‘sinewave’; samplesToSimulate  = 10 * wedgesPerRev;sampleTime = 1 / (wedgesPerRev * spinSpeedHz); % This is a vector oftimes to be used in plots and in simulations. time Vector =[0:samplesToSimulate-1]*sampleTime; % Define an idealizedcontinuous-time rotational plant (rigid-mass-on-a-frictionless-plane,etc. vcmA_continuous = [0 1; 0 0]: vcmB_continuous = [0; 1];vcmC_continuous = vcmRadiusInches*tpi*[1 0]; vcmD_continuous = 0;vcmPlantSys_continuous = ss(vcmA_continuous, vcmB_continuous,vcmC_continuous, vcmD_continuous); vcmPlantSys =c2d(vcmPlantSys_continuous, sampleTime); % Define a simple (PD)controller. k = 100; b = 450; controllerNum = [(k+b) (−b)];controllerDen = [1 0]; controllerSys = tf(controllerNum, controllerDen,sampleTime); % Construct an artifact to allow us to put together aunity-feedback system (below). straightThroughSys = tf(1,1); % We'llneed to be able to feed disturbances into the command % (as if the VCMis being pushed by an outside force). controllerPlusDisturbance =parallel(controllerSys, straightThroughSys, [ ], [ ], 1, 1); % Put VCMand controller (plus disturbance) in series, to form the open-loop gain.vcmOpenLoopSys = series(controllerPlusDisturbance, vcmPlantSys); % Putin the feedback loop, to create the entire system (without any“feedforward” correction) % % **** VCM SYSTEM LOOP DIAGRAM **** %

% % For this system, our TARGET position is always zero. We will inject% RRO (and NRRO, if appropriate) through the DIST input. That way, it %is as if some outside entity is pushing the head around. % % ForservoSys, the first input is the TARGET input, % and the second input isthe DIST input. % % The system has three states: % % State #1 is the VCMangular position (in radians) % State #2 is the VCM angular velocity (inradians per second) % State #3 is an internal controller state % % Thesystem has two inputs: % % The first input is the TARGET % The secondinput is the DIST % % The system output is the head position (intracks). % vcmSys = feedback(vcmOpenLoopSys, straightThroughSys, 1, 1);% Now, construct a similar loop for spindle-speed control (including %the fact that the spindle is affected by the same rotational %disturbances that affect the actuator). Because we only care % aboutspindle speed (not position), the plant is first-order % (where theactuator plant is second-order, to account for both % speed andposition). % % For this system, though, we'll also allow noise in thespin-speed measurement. % % **** SPIN SYSTEM LOOP DIAGRAM **** % %

% % The system has one state. % % That state is the SPIN-SPEED % % Thesystem has three inputs: % % The first input is the TARGET % The secondinput is the DIST % The third input is the NOISE % % The system outputis the spin-speed (in radians per second) % kSpin = 10; % This resultsin a very low BW spin-control loop (below 2 Hz crossover)spindleA_continuous [0]; spindleB_continuous = [1]; spindleC_continuous= [1]; spindleD_continuous = [0]; spinPlantSys_continuous =ss(spindleA_continuous, spindleB_continuous, spindleC_continuous,spindleD_continuous); spinPlantSys = c2d(spinPlantSys_continuous,sampleTime); spinControlNum = [kSpin]; spinControlDen = [1];spinControlSys = tf(spinControlNum, spinControlDen, sampleTime);spinControlPlusDisturbance = parallel(spinControlSys,straightThroughSys, [ ], [ ], 1, 1); spinOpenLoopSysWithoutNoise =series(spinControlPlusDisturbance, spinPlantSys); spinOpenLoopSys =parallel(spinOpenLoopSysWithoutNoise, straightThroughSys, [ ], [ ], 1,1); spinSys = feedback(spinOpenLoopSys, straightThroughSys, 1, 1); %Construct a frequency-vector that goes up to (nearly) the Nyquistfrequency. % For now, use frequency increments of 0.001 times the VCMservo Nyquist frequency. omegaVector =2*pi*(1/(2*sampleTime))*[[0.0001:0.0001:0.0009][0.001:0.001:0.99]]; %Get the frequency-response of the loop. [vcmMag, vcmPhase, w] =bode(vcmOpenLoopSys, omegaVector); [spinMag, spinPhase, w] =bode(spinOpenLoopSys, omegaVector); % I do not know an elegant way toget a single error-transfer-function from % the (three-dimensional) setof all transfer-functions determined above. % Do it using a for-loop.clear target_TF_mag target_TF_phase dist_TF_mag dist_TF_phase clearspinTarget_TF_mag spinTarget_TF_phase spinDist_TF_mag spinDist_TF_phasefor i=[1:size(vcmMag,3)] target_TF_mag(i) = vcmMag(1,1,i);target_TF_phase(i) = vcmPhase(1,1,i)*pi/180; dist_TF_mag(i) =vcmMag(1,2,i); dist_TF_phase(i) = vcmPhase(1,2,i)*pi/180;spinTarget_TF_mag(i) = spinMag(1,1,i); spinTarget_TF_phase(i) =spinPhase(1,1,i)*pi/180; spinDist_TF_mag(i) = spinMag(1,2,i);spinDist_TF_phase  = spinPhase(1,2,i)*pi/180; end plotNum = 0; plotNum =plotNum+1; plot(plotNum); freq Vector = omegaVector / (2*pi);semilogx(freqVector, 20*log10(target_TF_mag), ‘b’, freqVector,(target_TF_phase*180/pi)+180, ‘r’); gz title(‘Open-loop gain andphase-margin for VCM control loop’); xlabel(‘Frequency (Hz)’);ylabel(‘Open-loop gain (dB) and Phase-Margin (Degrees-Dashed Line)’);plotNum = plotNum+1; plot(plotNum); semilogx(freqVector,20*log10(spinTarget_TF_mag), ‘b’, freqVector,(spinTarget_TF_phase*180/pi)+180, ‘r’); gz title(‘Open-loop gain andphase-margin for SPIN control loop’); xlabel(‘Frequency (Hz)’);ylabel(‘Open-loop gain (dB) and Phase-Margin (Degrees-Dashed Line)’); %Our target input to the VCM system will be all zeros. % Our disturbancewill have both positive and negative (extended) pulses. % % First,construct the input. % % The units of the disturbance arerad/sec{circumflex over ( )}2 (angular acceleration).disturbanceCycleTime = 1 / disturbanceFreqHz; disturbanceCycleSamples =round(disturbanceCycleTime / sampleTime); vcmU1 =zeros(samplesToSimulate, 1); vcmU2 = zeros(samplesToSimulate, 1); switch(disturbanceType) case {‘sinewave’, ‘SINEWAVE’, ‘sine’, ‘SINE’, ‘sin’,‘SIN’} vcmU2(20+1:20+disturbanceCycleSamples) = disturbanceAmplitude *sin(2*pi*[1:disturbanceCycleSamples]/disturbanceCycleSamples); case{‘pulse’, ‘PULSE’} vcmU2(20+1:20+disturbanceCycleSamples) =disturbanceAmplitude * ones(size([1 :disturbanceCycleSamples]));otherwise error(fprintf(‘vibRejectionDemo: Unrecognized disturbanceType,“%s”\n’, disturbanceType)); end vcmInput = [vcmU1 vcmU2];spinTargetSpeed = 2*pi*spinSpeedHz; spinInitState = spinTargetSpeed;spinU1 spinTargetSpeed * ones(samplesToSimulate, 1); spinU2 = vcmU2; %Put some “white noise” into the spindle speed output. This is added tosimulate % effects of written-in timing-runout, as well as electricalnoise and race-conditions % in the SAM-to-SAM timing measurement.spinSpeedNoise  = 0*0.05*(mean(rand(size(vcmU2, 1),12)′)′−0.5) + 0.00;spinU3 = spinSpeedNoise; spinInput = [spinU1 spinU2 spinU3]; % Simulatethe systems. spinSpeed = lsim(spinSys, spinInput, timeVector,spinInitState); vcmPos = lsim(vcmSys, vcmInput); % Show how thespin-speed is affected by the disturbance. plotNum = plotNum+1;plot(plotNum); plot(timeVector, spinU2/200); gz; hold on;plot(timeVector, (spinSpeed-spinTargetSpeed), ‘r’); hold off; gztitle(‘Disturbance/200 (dashed line;rad/sec{circumflex over ( )}2) andresulting spin-speed error (rad/sec)’); xlabel(‘Time (sec)’);wedgeToWedgeTimeSec = (1/wedgesPerRev) ./ (spinSpeedl(2*pi));wedgeToWedgeClocks = wedgeToWedgeTimeSec * servoClockFrequency; plotNum= plotNum+1; plot(plotNum); plot(timeVector, wedgeToWedgeClocks, ‘b*-’,timeVector, round(wedgeToWedgeClocks), ‘k’); gz;title(‘wedgeToWedgeClocks’); xlabel(‘Time (sec)’);ylabel(‘wedgeToWedgeClocks (unitless clock-counts)’); % Now, show howthe VCM position is affected. % (without the benefit of any feedforward,based upon spin-speed measurements). plotNum = plotNum+1; plot(plotNum);plot(timeVector, vcmU2/200); gz; hold on; plot(timeVector, vcmPos, ‘r’);hold off; gz title(‘Disturbance/200 (dashed line; radians/sec{circumflexover ( )}2) and resulting PES (tracks)’); xlabel(‘Time (sec)’); kSpinFF= −1; % The disturbance is estimated by digitally “differentiating” thetime between wedges. % estSpinSpeedNoQuantization (units of rad/sec) iswhat we would get if we had no quantization on the clock. %estSpinSpeedWithQuantization (also units of rad/sec) is what we wouldget with a quantized clock. estSpinSpeedNoQuantization = 2*pi ./(wedgesPerRev*wedgeToWedgeClocks/servoClockFrequency);estSpinSpeedWithQuantization = 2*pi ./(wedgesPerRev*round(wedgeToWedgeClocks)/servoClockFrequency); %difference and scale to get estimatedDisturbance (units ofrad/(sec{circumflex over ( )}2)). estimatedDisturbance = [0;diff(estSpinSpeedNoQuantization)] * (1/sampleTime); vcmInputWithFF(:,1)= vcmInput(:,1); vcmInputWithFF(:,2) = vcmInput(:,2) +kSpinFF*estimatedDisturbance; vcmPosWithFF = lsim(vcmSys,vcmInputWithFF); % We will now simulate the system's behavior with adiscretized spin-speed % measurement. We will offset the speed,discretize it, and then remove % the offset. By offsetting the noisefrom zero-mean, we can simulate the % situation in which ourwedge-to-wedge time is nearly an integer number % of clock-cycles, andso the number of clock-cycles counted can switch % back and forth by 1count from rev to rev. spinSpeedNoiseOffset = 0.0; discretizedEstDist =[0; diff(estSpinSpeedWithQuantization)] * (1/sampleTime); % Filter theestimated disturbance (to take some of the “edge” off of the discretizedsignal). alpha=0.50; num=[alpha 0]; den=[1 -(1-alpha)];estDistQuantizedAndFiltered=filter(num,den,discretrzedEstDist);vcmInputWithDiscretizedFF(:,1) = vcmInput(:,1);vcmInputWithDiscretizedFF(:,2) = vcmInput(:,2) +kSpinFF*estDistQuantizedAndFiltered; vcmPosWithDiscretizedFF =lsim(vcmSys, vcmInputWithDiscretizedFF); plotNum = plotNum+1;plot(plotNum); plot(timeVector, vcmPos, ‘b’, timeVector, vcmPosWithFF,‘k’, timeVector, vcmPosWithDiscretizedFF, ‘r’); gz title(‘PES without FF(dashed line), with perfect FF (medium line), and withfiltered/discretized FF (fine line)’) xlabel(‘Time (sec)’); ylabel(‘PES(tracks)’); plotNum = plotNum+1; plot(plotNum); plot(timeVector,estimatedDisturbance, ‘k’, timeVector, discretizedEstDist, ‘r’,timeVector, estDistQuantizedAndFiltered, ‘b’); gz title(‘Est dist,discretized spin speed (fine line), filtered disc speed (clear to 0.02sec, dashed after 0.02 sec)’); xlabel(‘Time (sec)’); ylabel(‘Estimatedrotational disturbance (rad/sec 2)’);

[0099]

What is claimed is:
 1. A servo system for a hard disk drive thatcontrols track alignment of a transducer head relative to a desiredtracking location using at least two measurements, (a) a firstmeasurement made from servo data position error signals (PES) read froma rotatable disk by the transducer head; and (b) a second measurementmade from a feed forward signal indicative of a disturbance applied tothe hard disk drive, the second measurement being used to control thetrack alignment only when the servo system determines that use of thesecond measurement will likely reduce track alignment error.
 2. Theservo system of claim 1, further comprising: a spindle motor rotatablysupporting the disk, wherein the feed forward signal comprises a spindlemotor speed indication determined from a frequency of servo markerspassing the transducer head.
 3. The servo system of claim 1, furthercomprising: an accelerometer connected to sense an acceleration of thedisk, wherein the feed forward signal comprises a signal from theaccelerometer.
 4. The servo system of claim 3, wherein the accelerometercomprises a rotational accelerometer.
 5. The servo system of claim 3,wherein the accelerometer comprises a linear accelerometer.
 6. The servosystem of claim 1, further comprising: a voice control motor (VCM)movably supporting the transducer head, wherein the feed forward signalcomprises a back emf signal from the VCM.
 7. The servo system of claim1, further comprising: a spindle motor rotatably supporting the disk,wherein the feed forward signal comprises a back emf signal from thespindle motor.
 8. The servo system of claim 1, wherein the feed forwardsignal comprises two or more of the following: an accelerometer signalprovided from the accelerometer sensing movement of the disk; a firstspindle motor speed indication signal provided from a frequency of servomarkers passing the transducer head as read from the disk rotated by thespindle motor; a second spindle motor speed indication signal providedfrom a back emf signal received from a winding of the spindle motor; anda voice control motor (VCM) movement indication signal provided from aback emf signal received from a winding of the VCM.
 9. The servo systemof claim 1, wherein the external disturbance comprises a physical shock.10. The servo system of claim 1, wherein the external disturbancecomprises a vibration.
 11. The servo system of claim 1, wherein theservo system determines that use of the second signal will likely reducethe track alignment error when a threshold magnitude for the disturbanceis exceeded.
 12. The servo system of claim 1, wherein the servo systemdetermines that use of the second signal will likely reduce the trackalignment error when a threshold of the PES signal is exceeded.
 13. Theservo system of claim 1, wherein the servo system determines that use ofthe second signal will likely reduce the track alignment error when athreshold of both the disturbance and the PES signal is exceeded. 14.The servo system of claim 1, wherein the servo system determines thatuse of the second signal will likely reduce the track alignment errorwhen a threshold is exceeded, the threshold being determined from acomputer model enabling comparison of predicted PES amounts with andwithout the use of the second signal.
 15. The servo system of claim 1,wherein the servo system determines that use of the second signal willlikely reduce the track alignment error when a threshold is exceeded,the threshold being set with a magnitude so that moving the read/writehead to make correct track alignment corrections after the disturbanceoccurs would take less time than use of the PES alone.
 16. The servosystem of claim 1, wherein the servo system determines that use of thesecond signal will likely reduce the track alignment error when athreshold is exceeded, the threshold being set with hysteresis.
 17. Theservo system of claim 1, wherein when the second measurement is used,track alignment correction is provided using the feed forward signalwithout the PES signal.
 18. The servo system of claim 1, wherein whenthe second measurement is used, track alignment correction is providedusing both the feed forward signal and the PES signal.
 19. The servosystem of claim 1, wherein the servo system comprises: a memory storingdata indicating a threshold; a processor coupled to the memory and tothe read/write head, the processor configured to determine when theservo system will determine track alignment control using the secondmeasurement based on whether the threshold is exceeded.
 20. A servosystem for a hard disk drive that controls the track alignment of atransducer head relative to a desired tracking location using at leasttwo measurements, a first measurement made from servo data positionerror signals (PES) read from the rotatable disk by the read/write head;and a second measurement made from a feed forward signal indicative ofexternal disturbances applied to the hard disk drive, the secondmeasurement being used to determine the track alignment only when athreshold value related to the disturbance is detected.
 21. The servosystem of claim 20, wherein the threshold value comprises a PES signalmagnitude.
 22. The servo system of claim 20, wherein the threshold valuecomprises a disturbance magnitude.
 23. The servo system of claim 20,wherein the threshold value is provided with hysteresis, so that thethreshold has a first value when use is made of the second measurementand second value when switching back to not using the secondmeasurement.
 24. The servo system for a hard disk drive comprising: amemory storing data indicating a physical shock threshold; a processorcoupled to the memory and to a transducer head to read data from andwrite data to tracks on a rotatable disk, wherein track alignmentcorrection of the head relative to a desired one of the tracks isdetermined by the processor using at least two measurements, (a) a firstmeasurement made from servo data position error signals (PES) read fromthe rotatable disk; and (b) a second measurement made from a feedforward signal provided to the processor indicating movement of the harddisk drive, the second measurement being used to provide the trackalignment correction only when the physical shock threshold is exceeded.25. A servo system for a hard disk drive that controls track alignmentof a transducer head relative to a desired tracking location using atleast two measurements, (a) a first measurement made from servo dataposition error signals (PES) read from a rotatable disk by thetransducer head; and (b) a second measurement made from a feed forwardsignal indicative of a disturbance applied to the hard disk drive, thesecond measurement being used to control the track alignment only whenthere is a determination that use of the second measurement reducestrack alignment error.
 26. An improved servo system for a hard diskdrive that controls track alignment of a transducer head relative to adesired track using a first measurement made from servo data positionerror signals (PES) read from a rotatable disk by the transducer, theimprovement comprising: a second measurement made from a feed forwardsignal indicative of a disturbance applied to the hard disk drive, thesecond measurement being used to control the track alignment only whenthere is a determination that use of the second measurement reducestrack alignment error.
 27. An improved servo system for a hard diskdrive that controls track alignment of a transducer head relative to adesired track using using a first measurement of error read from arotating disk, the improvement comprising: a second measurement madefrom a feed forward signal indicative of a disturbance applied to thehard disk drive, the second measurement being used to control the trackalignment only when there is a determination that use of the feedforward measurement reduces track alignment error.
 28. A servo systemfor a hard disk drive that controls the track alignment of a transducerhead relative to a desired tracking location using at least twomeasurements, (a) a first measurement made from servo data positionerror signals (PES) read from the rotatable disk by the transducer head;and (b) a second measurement made from a signal indicative of adisturbance applied to the hard disk drive, the second measurement beingused to control the track alignment only when there is a determinationthat use of the second measurement reduces track alignment error.
 29. Animproved servo system for a hard disk drive that controls trackalignment of a transducer head relative to a desired track using a firstmeasurement made from servo data position error signals (PES) read fromthe rotatable disk by the transducer, the improvement comprising: asecond measurement made from a signal indicative of a disturbanceapplied to the hard disk drive, the second measurement being used tocontrol the track alignment only when there is a determination that useof the second measurement reduces track alignment error.
 30. A servosystem for a hard disk drive that controls the track alignment of atransducer head relative to a desired track location by, (a) a firstmeasurement made from servo data position error signals (PES) read fromthe rotatable disk by the transducer head; (b) a second measurement madefrom a feed forward signal indicative of a disturbance applied to thehard disk drive, and (c) a comparison of measurements made using the PESwith and without the second measurement to determine when use of thesecond measurement reduces track alignment error.
 31. A servo system fora hard disk drive that controls the track alignment of a transducer headrelative to a desired track location by, (a) a first measurement madefrom servo data position error signals (PES) read from the rotatabledisk by the transducer head; (b) a second measurement made from a signalindicative of a disturbance applied to the hard disk drive, and (c) acomparison of measurements made using the PES with and without thesecond measurement to determine when use of the second measurementreduces track alignment error.